package com.wenx.v3system.modular.cloud.service;

import com.wenx.v3system.modular.cloud.domain.dto.UserAuthResponseDto;
import com.wenx.v3system.modular.cloud.domain.dto.UserLoginDto;
import com.wenx.v3system.modular.cloud.domain.dto.UserRegisterDto;

import java.util.Map;

/**
 * 系统认证服务接口
 * 负责用户注册、登录、登出等认证相关功能
 * 
 * @author wenx
 * @since 1.0.0
 */
public interface SysAuthService {

    /**
     * 用户注册
     * 
     * @param registerDto 注册信息
     * @return 认证响应
     */
    UserAuthResponseDto register(UserRegisterDto registerDto);

    /**
     * 用户登录
     * 
     * @param loginDto 登录信息
     * @return 认证响应
     */
    UserAuthResponseDto login(UserLoginDto loginDto);

    /**
     * 用户登出
     * 
     * @param userId 用户ID
     */
    void logout(Long userId);

    /**
     * 刷新令牌
     * 
     * @param refreshToken 刷新令牌
     * @return 认证响应
     */
    UserAuthResponseDto refreshToken(String refreshToken);

    /**
     * 验证令牌
     * 
     * @param token 访问令牌
     * @return 验证结果
     */
    Map<String, Object> validateToken(String token);

    /**
     * 获取当前用户
     * 
     * @return 当前用户信息
     */
    UserAuthResponseDto getCurrentUser();

    /**
     * 检查账号是否存在
     * 
     * @param account 账号
     * @return 是否存在
     */
    boolean checkAccountExists(String account);

    /**
     * 检查用户名是否存在
     * 
     * @param username 用户名
     * @return 是否存在
     */
    boolean checkUsernameExists(String username);

    /**
     * 检查邮箱是否存在
     * 
     * @param email 邮箱
     * @return 是否存在
     */
    boolean checkEmailExists(String email);

    /**
     * 检查手机号是否存在
     * 
     * @param phone 手机号
     * @return 是否存在
     */
    boolean checkPhoneExists(String phone);
}